package com.niodata.dp.plugin.core;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface InputParam {

  /**
   * param name.
   *
   * @return name
   */
  public String name();

  public String displayName();

  public boolean password() default false;

  /**
   * param group name.
   * @return
   */
  public String group() default "";

  /**
   * param description.
   *
   * @return description
   *
   */
  public String description() default "";

  public boolean required() default true;

  public String defaultValue() default "";

  /**
   * param example.
   *
   * @return example
   */
  public String example() default "";

  /**
   * is time、date or timestamp.
   *
   * @return true/false
   */
  public boolean isTime() default false;

  /**
   * time format.
   *
   * @return str
   */
  public String timeFormat() default "";

  /**
   * parse or not parse time param,default true.
   *
   * @return true/false
   */
  public boolean parseTime() default true;

  /**
   * param enum options.
   * @return
   */
  public String[] options() default {};

}
